import request from '../service/service';

/**
 * 总体进度列表
 * @param data {Object} 请求参数
 */
export function getProgressList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/findPage',
    method: 'get',
  });
}

/**
 * 水务总体进度列表
 * @param data {Object} 请求参数
 */
export function getWaterProgressList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/manage/findPage',
    method: 'get',
  });
}

/**
 * 删除总体进度
 * @param data {Object} 请求参数
 */
export function deleteProgress(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/deleteByIds',
    method: 'delete',
  });
}

/**
 * 水务删除总体进度
 */
export async function deleteWaterProgress(data) {
  return await request({
    options: data,
    protocol: 'bus/schedule/manage/deleteById',
    method: 'delete',
  });
}

/**
 * 进度模板下载
 * @param data {Object} 请求参数
 */
export function getUploadTemplate(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/getUploadTemplate',
    method: 'get',
  });
}

/**
 *  水务进度模板下载
 * @param data {Object} 请求参数
 */
export async function getWaterUploadTemplate(data) {
  return await request({
    options: data,
    protocol: 'bus/schedule/manage/getUploadTemplate',
    method: 'get',
  });
}

/**
 * 总体进度数据导出
 * @param data {Object} 请求参数
 */
export function downLoadXlsByJxl(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/downLoadXlsByJxl',
    method: 'get',
    requestConfig: {
      responseType: 'arraybuffer'
    }
  });
}

/**
 * 总体进度数据导入
 * @param data {Object} 请求参数
 */
export function uploadExcel(data) {
  const { projectId, file } = data;
  return request({
    options: file,
    protocol: 'bus/schedule/master/uploadExcel?projectId=' + projectId,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 水务总体进度数据导入
 */
export async function waterUploadExcel(data) {
  const { projectId, file, scheduleType } = data;
  const str = `projectId=${projectId}&scheduleType=${scheduleType}`;
  return await request({
    options: file,
    protocol: `bus/schedule/manage/uploadExcel?${str}`,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 水务进度数据导入XML
 */
export function uploadExcelXMLByWater(data) {
  const { projectId, file, scheduleType } = data;
  return request({
    options: file,
    protocol: `bus/schedule/manage/uploadExcelXML?projectId=${projectId}&scheduleType=${scheduleType}`,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 新增进度数据
 */
export function addProgress(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/create',
    method: 'post',
  });
}

/**
 * 水务新增进度数据
 */
export function addWaterProgress(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/manage/create',
    method: 'post',
  });
}

/**
 * 编辑进度数据
 * @param data {Object} 请求参数
 */
export function updateProgress(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/update',
    method: 'post',
  });
}

/**
 * 水务编辑进度数据
 * @param data {Object} 请求参数
 */
export async function updateWaterProgress(data) {
  return await request({
    options: data,
    protocol: 'bus/schedule/manage/change',
    method: 'post',
  });
}

/**
 * 进度反馈
 */
export function progressFeedback(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/manage/feedback',
    method: 'post',
  });
}

/**
 * 进度设置里程碑
 * @param data {Object} 请求参数
 */
export function scheduleMilepostSet(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/scheduleMilepostSet',
    method: 'post',
  });
}

/**
 * 获取里程碑列表
 * @param data {Object} 请求参数
 */
export function getMilepostList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/milepost/findPage',
    method: 'get',
  });
}

/**
 * 删除里程碑
 * @param data {Object} 请求参数
 */
export function deleteMilepost(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/milepost/deleteByIds',
    method: 'delete',
  });
}

/**
 * 新增里程碑
 * @param data {Object} 请求参数
 */
export function addMilepost(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/milepost/create',
    method: 'post',
  });
}

/**
 * 新增里程碑
 * @param data {Object} 请求参数
 */
export function updateMilepost(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/milepost/update',
    method: 'post',
  });
}

/**
 * 产值进度
 * @param data {Object} 请求参数
 */
export function getProgressOut(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/out/findPage',
    method: 'get',
  });
}

/**
 * 新增产值进度
 * @param data {Object} 请求参数
 */
export function addProgressOut(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/out/create',
    method: 'post',
  });
}

/**
 * 删除产值进度
 * @param data {Object} 请求参数
 */
export function deleteProgressOut(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/out/deleteByIds',
    method: 'delete',
  });
}

/**
 * 修改产值进度
 * @param data {Object} 请求参数
 */
export function updateProgressOut(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/out/update',
    method: 'post',
  });
}

/**
 * 获取进度产值导入模板
 * @param data {Object} 请求参数
 */
export function getProgressTemplate(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/out/getUploadTemplate',
    method: 'get',
  });
}

/**
 * 进度产值数据导入
 * @param data {Object} 请求参数
 */
export function uploadProgExcel(data) {
  const { projectId, file } = data;
  return request({
    options: file,
    protocol: 'bus/schedule/out/uploadExcel?projectId=' + projectId,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 月进度数据导入
 * @param data {Object} 请求参数
 */
export function uploadMonthExcel(data) {
  const { projectId, file } = data;
  return request({
    options: file,
    protocol: 'bus/schedule/month/uploadExcel?projectId=' + projectId,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 获取月体进度导入模板
 * @param data {Object} 请求参数
 */
export function getMonthUploadTemplate(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/month/getUploadTemplate',
    method: 'get',
  });
}

/**
 * 进度设置里程碑集合
 * @param data {Object} 请求参数
 */
export function scheduleMilepostSetList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/scheduleMilepostSetList',
    method: 'post',
  });
}

/**
 * 水务进度设置里程碑
 * @param data {Object} 请求参数
 */
export async function waterScheduleMilepostSet(data) {
  return await request({
    options: data,
    protocol: 'bus/schedule/manage/setMilepost',
    method: 'post',
    hasQuery: true,
  });
}

/**
 * 获取变更记录列表
 * @param data {Object} 请求参数
 */
export function getScheduleChangeList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/master/getScheduleChangeList',
    method: 'get',
  });
}

/**
 * 水务获取变更记录列表
 */
export async function getWaterScheduleChangeList(data) {
  return await request({
    options: data,
    protocol: 'bus/schedule/manage/getChangePage',
    method: 'get',
  });
}

/**
 * 获取进度面貌文件夹信息
 * @param data {Object} 请求参数
 */
export function getDirList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/dir/findPage',
    method: 'get',
  });
}

/**
 * 新增进度面貌文件夹信息
 * @param data {Object} 请求参数
 */
export function addDirList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/dir/create',
    method: 'post',
  });
}

/**
 * 删除进度面貌文件夹信息
 * @param data {Object} 请求参数
 */
export function deleteDirList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/dir/deleteByIds',
    method: 'delete',
  });
}

/**
 * 修改进度面貌文件夹信息
 * @param data {Object} 请求参数
 */
export function updateDirList(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/dir/update',
    method: 'post',
  });
}

/**
 * 新增进度面貌文件信息
 * @param data {Object} 请求参数
 */
export function addScheduleFile(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/file/create',
    method: 'post',
  });
}

/**
 * 删除进度面貌文件信息
 * @param data {Object} 请求参数
 */
export function deleteScheduleFile(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/file/deleteByIds',
    method: 'delete',
  });
}

/**
 * 删除进度面貌文件信息
 * @param data {Object} 请求参数
 */
export function updateScheduleFile(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/file/update',
    method: 'post',
  });
}

/**
 * 获取进度面貌文件信息
 * @param data {Object} 请求参数
 */
export function getScheduleFile(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/file/findPage',
    method: 'get',
  });
}

/**
 * 进度预警/进度占比
 * @param data {Object} 请求参数
 */
export function getScheduleEarly(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/screen/getScheduleEarly',
    method: 'get',
  });
}

/**
 * 项目里程表
 * @param data {Object} 请求参数
 */
export function getMilepostSet(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/screen/getMilepostSet',
    method: 'get',
  });
}

/**
 * 赢得值图表/进度产值
 * @param data {Object} 请求参数
 */
export function getGainChartStatistic(data) {
  return request({
    options: data,
    protocol: 'bus/schedule/screen/getGainChartStatistic',
    method: 'get',
  });
}
